
import requestHelper from "@/utils/RequestHelper";
import {$params} from "@/utils/utils"
export function $post(url,data,options) {
  return requestHelper.post({
    url: url,
    data,
    options,
  });
}
export function $get(url,data) {
  return requestHelper.get({
    url:$params(url,data),
  });
}
export function $getByParams(url,data) {
  let otherParams = queryURLParams(url);
  let count = 0;
  for (let key in otherParams) {
    data[key] = otherParams[key];
    count = count+1;
  }
  if (count>0){
    url = url.substring(0, url.indexOf('?'));
  }
  return requestHelper.get({
    url:$params( url,data),
  });
}

function queryURLParams(url, paramName) {
  // 正则表达式模式，用于匹配URL中的参数部分。正则表达式的含义是匹配不包含 ?、&、= 的字符作为参数名，之后是等号和不包含 & 的字符作为参数值
  let pattern = /([^?&=]+)=([^&]+)/g;
  let params = {};

  // match用于存储正则匹配的结果
  let match;
  // while 循环和正则表达式 exec 方法来迭代匹配URL中的参数
  while ((match = pattern.exec(url)) !== null) {
    // 在字符串url中循环匹配pattern，并对每个匹配项进行解码操作，将解码后的键和值分别存储在key和value变量中
    let key = decodeURIComponent(match[1]);
    let value = decodeURIComponent(match[2]);

    if (params[key]) {
      if (Array.isArray(params[key])) {
        params[key].push(value);
      } else {
        params[key] = [params[key], value];
      }
    } else {
      // 参数名在 params 对象中不存在，将该参数名和对应的值添加到 params 对象中
      params[key] = value;
    }
  }

  if (!paramName) {
    // 没有传入参数名称, 返回含有所有参数的对象params
    return params;
  } else {
    if (params[paramName]) {
      return params[paramName];
    } else {
      return '';
    }
  }
}